lib_unif, UNIF File library
(C) 2000-2001 PrOxY

contact: emt3734@rit.edu
all suggestions are welcome

Known Flaws:
	- spec does not say what should be in VROR/BATR chunk byte...i assume 0's
	- read block not supported in conversion program

5/10/01 - Whatsnew - lib_unif 1.14
======================================================
	- fixed makefile dependancies
	- changed function names for loading/freeing
		unif files to be more consistant with the rest of the program
	- added a "get_cart_type" which will determine the type 
		(unif, nes, invalid)
	- general code cleanup/fixes
	- optimized many routines
	- some others i forget

3/21/01 - Whatsnew - lib_unif 1.11
======================================================
	- minor Makefile update
	- fixed some portabilit issues with Win32

1/2/01 - Whatsnew - lib_unif 1.9 ( update )
======================================================
	- added a MSVC++ 6.0 project that will create a 
		static library for use in Win32 systems
	- fixed minor portability issue	with strncasecmp vs
		strnicmp.  For now, until it is settled on which 
		function should be used to do a case insensitive
		string compare, I use a simple macro which checks
		if WIN32 is defined.
	- included new spec doc with distrobution archive

11/13/00 - Whatsnew - lib_unif 1.9 ( no code changes )
======================================================
	- changed make format a bit, on *nix system
		it will now link the actual library as a 
		static library file "libunif.a", which you can
		link with using the "-lunif" compiler flag
		and the example program simply links to it
		this way emulators can simply link to the library
		so it's code need not be included in there code base

10/27/00 - Whatsnew - lib_unif 1.9
======================================================
	- basic code cleanup, no major changes
	- added flag to makefile to bitch if not strict ANSI C :P

8/2/00 - Whatsnew - lib_unif 1.8
======================================================
	- now uses "lib_ines" to load/convert ines roms
		this should eliminate any linking errors/conflicts
		the two had while trying to use both seperately
		due to things being defined twice.
	- due to "lib_ines" integration, it can now
		load and handle iNES files as well :)
	- made a few things more consistnant/neater
	- defined caps version of many data types as the lowercase version
		ex: UINT8 is defined as uint8 now
	

8/19/00 - Whatsnew - lib_unif 1.3
======================================================
	- fully ported and now being developed in linux. 
		Makefile has been created and I am using RCS to maintain 
		versions, which will now start at version 1.1.
		lib_unif version will reflect latest version number of all files, 
		so if you have 2 files that say 1.1 and 1 that says 1.2 
		lib_unif version is: 1.2 :P
	- couple of cosmetic changes being done
	- using strcasecmp instead of stricmp now, more portable
	- expect a CRC based conversion system in the future :)
	- changed data tupes around to be "nicer code":
		byte -> uint8
		word -> uint16
		dword -> uint32
	- demo executable now uses parameters to deside source and dest images
	- now includes zlib as a SYSTEM library... not included with source
		if you wish to compile with it you need to have it link yourself
		ex: in linux compile with the "-lz" compiler flag

7/19/00 - Whatsnew - lib_unif 1.0.5
======================================================
	- added a few more macros for ease of maintinence
	- now correctly transfers the CHR-ROM ( math error )
	- fixed DUMB ass bug causing chr-rom to be offset by +16 bytes :P
	- changed a few things in favor of consistancy
	- added a routine to determine iNES style info from UNIF board name

7/11/00 - Whatsnew - lib_unif 1.0.4
======================================================
	- fixed a few bugs where i forgot that gets kept the return
	- now uses open_UNIF which can open for reading or writing
	- now get_error_string_UNIF returns const char * which does not need to be freed
	- made an example loader routine w/ example funtion to free it
	- made nice function for displaying menus during creation of a unif file
	- added a check for EOF on a failed read to make it easy to detect end of file
	- now frees skiped blocks ( my bad )
	- now uses a constant array of '\0's to check the reserved section
		instead of using a temp variable and memset
	- moved tag definitions to a seperate header file
	- added crc's via zlib ( included )


6/10/00 - Whatsnew - lib_unif 1.0.3
======================================================
	- MAPR block data can now contain spaces :)
	- fixed a few things that where querky
	- made [n] the default selection during conversion ( enter is default )
	- made seperate function for asking a yes/no question, less repeated code
	- changed all gets calls to fgets, now cant overrun buffer


6/10/00 - Whatsnew - lib_unif 1.0.2
======================================================
	- updated to support REV 7 of UNIF standard
	- removed any and all code for SCAN segment as per spec
	- changed CTRL to use bitfield ( i like it better now :) )

6/10/00 - Whatsnew - lib_unif 1.0.1
======================================================
	- Now Free's allocated memory on a failed read
	- chunk-data union ( may not stay gotta check some things out )
	- added writing functions to create UNIF files
	- changed write/read_chunk_UNIF to accept void * and void ** ..more versitile
	- aded a lot of code to start converting  iNES to UNIF
	- fixed a few bugs
	- borke up conversion code A LOT and made sep lib files for code
	- decided chunk union was useless, chunk header tells you everything

5/31/00 - Whatsnew - lib_unif 1.0.0
======================================================
	- Everything
